package com.ruoyi.web.petmall.pethome.controller;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.web.petmall.entity.UserEntity;
import com.ruoyi.web.petmall.uitl.SevenCowCloudUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * PictureController类，处理前台图片上传请求。
 */
@RestController
@RequestMapping(value = "/petHome/upload")
@Api(tags = "前台——图片上传")
public class PictureController {

    /**
     * 上传图片至云存储。
     *
     * @param file 上传的图片文件。
     * @return 包含上传结果的AjaxResult对象。
     * @throws IOException 如果文件处理过程中发生I/O错误。
     */
    @ApiOperation(value = "上传图片", notes = "将上传的图片文件存储到云存储服务", httpMethod = "POST")
    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public AjaxResult upload(
            @ApiParam(value = "宠物照片", required = true) @RequestPart("file") MultipartFile file
    ) throws IOException {
        // 检查文件是否为空
        if (file.isEmpty()) {
            return AjaxResult.error("上传失败，图片不能为空");
        }

        // 上传图片到七牛云
        Object msg = SevenCowCloudUtil.QiniuCloudUploadImage(file);

        // 创建并设置用户实体的图片信息
        UserEntity userEntity = new UserEntity();
        userEntity.setUserPicture(msg.toString());

        // 创建AjaxResult响应
        AjaxResult ajax = AjaxResult.success();
        // 将上传结果放入响应数据
        ajax.put("data", msg);

        return ajax;
    }
}
